#include <string>
#include <vector>
#include <stdarg.h>

#ifdef _MSC_VER
	#include <varargs.h>
#endif
#pragma once

#define YYDEBUG 1

#define YYERROR_VERBOSE 1

class AbstractNode;
class ClassNode;
class FeatureGroup;
class CreatorNode;
class ConverterNode;
class InheritanceNode;
class IdentifierNode;
class ClassTypeNode;
class RenameNode;
class FeatureGroup;
class FeatureDeclaration;
class EntityGroup;
class Constant;
class FeatureSpecName;
class FromLoopNode;
class ManifestArray;
class CreationCall;
template<typename T> class ListNode;
typedef ListNode<EntityGroup>   EntityList;
typedef ListNode<AbstractNode>  Compound;


#include "dse.tab.hpp"

extern FILE *  yyin;
extern std::vector<std::string *> gc_vector;

extern std::vector<ListNode<ClassNode> *> rootlist;

inline YYLTYPE make_pos(int line,int pos) { YYLTYPE res; res.first_line=line; res.first_column=pos; return res; }

int yylex();
int yyparse();
void yyerror(const char * s,...);
